package w16;

import java.util.Scanner;

public class S05 {
	//奇数魔方阵填写，使行、列、对角线上数据的和相等
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		System.out.println("请输入奇数魔方阵的大小，最小为3：");
		int size=sc.nextInt();//接受方阵的大小
		sc.close();
		if(size%2==0)++size;//确保是奇数
		if(size<3)size=3;//最小值的控制
		int[][]fz=new int[size][size];
		for(int num=1, row=0, col=size/2;num<=size*size;++num) {
			fz[row][col]=num;
			if(num%size==0)++row;
			else { //不是倍数，往右上角添加写个数据
				--row;
				++col;
				if(row<0)row=size-1;
				if(col==size)col=0;
			}
		}
		for (int i = 0; i < size; ++i) {
			for (int j = 0; j < size; ++j) {
				System.out.printf("%d\t", fz[i][j]);
			}
			System.out.println();
		}
	}
}
